package cpr.view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import odv.view.EntityComboBox;

import bean.vo.ProductoVO;
import cpr.controller.ClienteCprRMI;
import java.awt.Font;

@SuppressWarnings("serial")
public class ActualizarStockProducto extends javax.swing.JFrame implements ActionListener {

	private EntityComboBox<ProductoVO> cmbProductos;
	
	private JLabel lblCuit;
	private JPanel jPanel1;

	private JButton btnCancelar;

	private JTextField txtCodigo;
	private JTextField txtSufijo;
	private JTextField txtFabricante;
	private JTextField txtOrigen;
	private JTextField txtStock;
	private JButton btnModificar;
	
	
	public ActualizarStockProducto() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			this.setTitle("Actualizacion stock de productos");
			getContentPane().setLayout(null);
			this.setPreferredSize(new java.awt.Dimension(400, 400));
			
			lblCuit = new JLabel();
			getContentPane().add(lblCuit);
			lblCuit.setText("Producto: ");
			lblCuit.setBounds(24, 25, 95, 14);

			jPanel1 = new JPanel();
			getContentPane().add(jPanel1);
			jPanel1.setBounds(12, 65, 368, 210);
			jPanel1.setLayout(null);
			jPanel1.setBorder(BorderFactory.createTitledBorder(null, "Datos Producto", TitledBorder.LEADING, TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma",1,11), new java.awt.Color(0,0,255)));
			
			JLabel lblNewLabel = new JLabel("Codigo:");
			lblNewLabel.setBounds(10, 31, 46, 14);
			jPanel1.add(lblNewLabel);
			
			JLabel lblNewLabel_1 = new JLabel("Sufijo:");
			lblNewLabel_1.setBounds(194, 31, 46, 14);
			jPanel1.add(lblNewLabel_1);
			
			JLabel lblNewLabel_2 = new JLabel("Origen:");
			lblNewLabel_2.setBounds(10, 104, 46, 14);
			jPanel1.add(lblNewLabel_2);
			
			JLabel lblNewLabel_3 = new JLabel("Fabricante:");
			lblNewLabel_3.setBounds(10, 67, 60, 14);
			jPanel1.add(lblNewLabel_3);
			
			txtCodigo = new JTextField();
			txtCodigo.setEditable(false);
			txtCodigo.setBounds(76, 28, 86, 20);
			jPanel1.add(txtCodigo);
			txtCodigo.setColumns(10);
			
			txtSufijo = new JTextField();
			txtSufijo.setEditable(false);
			txtSufijo.setBounds(240, 28, 86, 20);
			jPanel1.add(txtSufijo);
			txtSufijo.setColumns(10);
			
			txtFabricante = new JTextField();
			txtFabricante.setEditable(false);
			txtFabricante.setBounds(76, 64, 250, 20);
			jPanel1.add(txtFabricante);
			txtFabricante.setColumns(10);
			
			txtOrigen = new JTextField();
			txtOrigen.setEditable(false);
			txtOrigen.setBounds(76, 101, 250, 20);
			jPanel1.add(txtOrigen);
			txtOrigen.setColumns(10);
			
			JLabel lblNewLabel_4 = new JLabel("Stock:");
			lblNewLabel_4.setBounds(10, 148, 46, 14);
			jPanel1.add(lblNewLabel_4);
			
			txtStock = new JTextField();
			txtStock.setBounds(76, 145, 70, 20);
			jPanel1.add(txtStock);
			txtStock.setColumns(10);
			
			List<ProductoVO> pc = ClienteCprRMI.getInstance().getIRemota().getProductos();
			if (pc == null){
				JOptionPane.showMessageDialog(null, "No se encuentran productos para modificar.", "No existen productos", JOptionPane.WARNING_MESSAGE);	
			} else {
				if (pc.size() > 0) {
					cargarProducto(pc.get(0));
				}
			}
			
			cmbProductos = new EntityComboBox<ProductoVO>();
			cmbProductos.setItems(pc);
			getContentPane().add(cmbProductos);
			cmbProductos.setBounds(100, 22, 275, 21);
			cmbProductos.addActionListener(this);

			btnCancelar = new JButton();
			getContentPane().add(btnCancelar);
			btnCancelar.setText("Cancelar");
			btnCancelar.setBounds(201, 310, 91, 30);
			btnCancelar.setFont(new java.awt.Font("Tahoma",1,11));
			btnCancelar.addActionListener(this);
			
			btnModificar = new JButton();
			btnModificar.setText("Modificar");
			btnModificar.setFont(new Font("Tahoma", Font.BOLD, 11));
			btnModificar.setBounds(100, 310, 91, 30);
			getContentPane().add(btnModificar);
			btnModificar.addActionListener(this);

			pack();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void cargarProducto(ProductoVO prod) {
		if (prod != null) {
			txtCodigo.setText(prod.getRodamiento().getCodigo());
			txtSufijo.setText(prod.getRodamiento().getSufijo());
			txtOrigen.setText(prod.getOrigen().getNombre());
			txtFabricante.setText(prod.getFabricante().getNombre());
			txtStock.setText(prod.getStock().toString());
		} else {
			txtCodigo.setText("");
			txtSufijo.setText("");
			txtOrigen.setText("");
			txtFabricante.setText("");
			txtStock.setText("");
		}
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		if (arg0.getSource() == cmbProductos) {
			cargarProducto(cmbProductos.getSelectedItem());
		} else if (arg0.getSource() == btnModificar){
			ProductoVO prod = cmbProductos.getSelectedItem();
				
			try {
				prod.setStock(Integer.valueOf(txtStock.getText()));
			} catch (Exception e) {
				JOptionPane.showMessageDialog(null, "Stock invalido.", "Error en la carga de datos", JOptionPane.WARNING_MESSAGE);
				return;
			}
			
			try {
				ClienteCprRMI.getInstance().getIRemota().modificarProducto(prod);
				JOptionPane.showMessageDialog(null, "Producto actualizado con exito.", "Actualizacion de Datos", JOptionPane.INFORMATION_MESSAGE);
			} catch (RemoteException e) {
				String message = e.getMessage();
				int index = message.indexOf("java.rmi.RemoteException: ");
				message = message.substring(index + 26, message.length());
				JOptionPane.showMessageDialog(null, message, "Error", JOptionPane.ERROR_MESSAGE);
			}
		} else if (arg0.getSource() == btnCancelar) {
			dispose();
		}
	}
}
